﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Windows;
using Microsoft.Practices.Prism.Modularity;
using Microsoft.Practices.Prism.UnityExtensions;
using Microsoft.Practices.Unity;

using RZD_maps.Modules.Map;
using RZD_maps.Modules.Stations;
using RZD_maps.Modules.Ribbon;
using RZD_maps.Modules.Properties;
using RZD_maps.Modules.Graphics;
using RZD_maps.Modules.Graphics2;
using RZD_maps.Modules.Graphics3;
using RZD_maps.Modules.MapScale;
using RZD_maps.Modules.Transport;
using RZD_maps.Modules.Console;

namespace RZD_maps
{
    public class RzdBootstrapper : UnityBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return Container.Resolve<Shell>();
        }

        protected override void InitializeShell()
        {
            base.InitializeShell();
            App.Current.MainWindow = (Window)this.Shell;
            App.Current.MainWindow.Show();
        }

        protected override void ConfigureModuleCatalog()
        {
            base.ConfigureModuleCatalog();

            ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
            moduleCatalog.AddModule(typeof(MapModule));
            moduleCatalog.AddModule(typeof(StationModule));
            moduleCatalog.AddModule(typeof(RibbonModule));
            moduleCatalog.AddModule(typeof(PropertiesModule));
            moduleCatalog.AddModule(typeof(GraphicsModule));
            moduleCatalog.AddModule(typeof(MapScaleModule));
            moduleCatalog.AddModule(typeof(TransportModule));
            moduleCatalog.AddModule(typeof(ConsoleModule));
            moduleCatalog.AddModule(typeof(Graphics2Module));
            moduleCatalog.AddModule(typeof(Graphics3Module));

        }
    }
}
